/**
 * 
 */
package kr.co.insoft.auth.repository.mail;

import java.util.HashSet;

import kr.co.insoft.auth.model.mail.MaillingFormModel;
import kr.co.insoft.auth.model.members.JoinFormModel;
import kr.co.insoft.framework.exceptions.RepositoryException;

/**
 * @author IN-SOFT Inc. GoodwillDD(sylee@in-soft.co.kr)
 * 
 */
public interface MaillingRepository {
	/**
	 * 가입 축하 및 계정 활성화 메일을 발송 등록한다.
	 * 
	 * @param maillingFormModel
	 * @throws RepositoryException
	 */
	public void sendRegistedMail(JoinFormModel joinFormModel)
			throws RepositoryException;

	/**
	 * 발송할 메일 내역을 가지고 온다.
	 * 
	 * @return
	 * @throws RepositoryException
	 */
	public HashSet<MaillingFormModel> checkMails() throws RepositoryException;

	/**
	 * 발송한 메일을 발송 완료 처리한다.
	 * 
	 * @param mails
	 * @throws RepositoryException
	 */
	public void completedMails(HashSet<MaillingFormModel> mails)
			throws RepositoryException;

	/**
	 * 발송이 완료된 메일을 정리한다.
	 */
	public void cleanMails() throws RepositoryException;

	/**
	 * @return
	 */
	public MaillingFormModel getMail(String confirmKey) throws RepositoryException;

	/**
	 * @param seq
	 */
	public void cleanMail(Long seq) throws RepositoryException;
}
